/**
 * @author Hemant
 * Horizontal.java
 * It is used for horizontal recursion on data lines.
 * This class gets data when the direction for data fetching is horizontal
 * for a file
 */

/*
*Released on 28th June 2008.
*Any violations can be reported at paritosh@wikiocean.net
*What is treated as violations can be found at www.wikiocean.net/ppl1-voilations*
******************************************************************************
* The contents of this file are subject to POOL Public License 1.0 and later.
* POOL Public License is based on Affero GPL v3 and additional conditions.
* ("License"); You may not use this file except in compliance with the License
* You may obtain a copy of the Affero GPL v3 License at http://www.gnu.org/licenses/agpl.html
* You may obtain a copy of the POOL Public License 1.0 or later at www.wikiocean.net/license/ppl.html
* Software distributed under POOL Public License 1.0 is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
* the specific language governing rights and limitations under the License.
* The Initial Developer of the Original Code is Paritosh Pungaliya (C) 2008. All Rights Reserved.
******************************************************************************
* Objective of the additional terms (license)
* 1) Is to extend the software freedom to freedom to work.
* 2) To ensure that knowledge is free from monopoly of agencies.
* 3) To avoid a situation where big corporate or investor can buy out free software groups and companies and then start milking the communities built around it.
* (this trend can be seen how the freedom is curtailed in companies that get Venture Capital funding.)
******************************************************************************
*/

package  guiproperty;

import java.util.Hashtable;
import java.util.LinkedList;

import dbmanager.DBManager;
import dbmanager.GetIdName;
import utility.Input;

public class Horizontal implements HTMLInterface
{	
	private String header,tag="",param = "",displaytext="",line="",report="";
	private String ObjectName;
	Hashtable<Object, Object> hash;
	Hashtable<Object, LinkedList<Object>> ObjProp;
	private LinkedList<Object> PropList;
	GetIdName get;
	
	/**
	 * This method sets object name.
	 */
	public void setObjectName(String ObjectName) 
	{
		this.ObjectName = ObjectName;
	}
	
    public void setParam(String param)
    {
        this.param = param;
    }
    
    public void setDisplayText(String displaytext) 
	{
		this.displaytext = displaytext;
	}
    
	/**
	 * This method sets line from a file from which data is extracted 
	 */
	public void setLine(String line) 
	{
		this.line = line;
	}
	
	public void setReport(String report) 
	{
		this.report = report;
	}
	public void setTag(String tag) 
	{
		this.tag  = tag;
	}
	
	public void setGetIdName(GetIdName get) 
	{
		this.get = get;
	}
	
	/**
	 * This method gets data from first line of file in HTML code in the String
	 * @return HTML code 
	 */
	public String getHTMLCode() 
	{				
		try {
			StringBuffer buffer = new StringBuffer();
			buffer.append("");
			int size = PropList.size();		
			
			for(int i = 0;i < size;i++ )
			{
				String [] property = PropList.get(i).toString().split(Input.SEPARATOR);
				System.out.println("The property array is "+PropList.get(i));
				
				if(property[0].equalsIgnoreCase("type"))
				{
					tag = property[1];
				}
			}
			
			if(line.contains(Input.SEPARATOR))
			{
				String [] strarr = line.split(Input.SEPARATOR);
				for(int i = 0;i < strarr.length; i++)
				{
					buffer.append("<"+tag+">");
					buffer.append(strarr[i]);
					buffer.append("</"+tag+">");
				}				
			}
			else
			{
				buffer.append(line.trim().toString());
			}
			
			System.out.println("The string buffer in Horizontal class is "+buffer.toString());
			return buffer.toString();
		} catch (Exception e) {
			return "";
		}
	}
	
	/**
	 * This method accepts a hashtable and extracts the object specific property list.
	 * It gets properties and sets global property values.
	 */
	public void setObjPropertyList(Hashtable<Object, LinkedList<Object>> ObjectPropertyList) 
	{
		this.ObjProp = ObjectPropertyList;
		this.PropList = ObjectPropertyList.get(this.ObjectName);		
	}
	
	public void setText(String text) {
		// TODO Auto-generated method stub
		
	}

	public void setParamHash(Hashtable<Object, Object> hash) {
		// TODO Auto-generated method stub
		
	}

	public void setNoSelectObject(String noselect) {
		// TODO Auto-generated method stub
		
	}

	public void setSelectObject(String select) {
		// TODO Auto-generated method stub
		
	}

	public void isEnd(boolean end) {
		// TODO Auto-generated method stub
		
	}

	public void setHeaderLine(String header) {
		// TODO Auto-generated method stub
		this.header = header;
	}

		
}
